{{tag>dapper edgy securite sauvegarde}}

----



====== rdiff-backup : Solution de sauvegarde incrémentielle ======

Faire des sauvegardes différentielles journalières de son ''/home'' et supprimer les sauvegardes vieilles d'une semaine par exemple. Ceci est réalisé via le logiciel **rdiff-backup**. J'explique également comment tout automatiser.

Rdiff-backup peut être utilisé sur linux, macosX et windows, ce qui vous permet d'installer ce logiciel sur n'importe quel ordi, et sauvegarder ces ordis sur votre serveur via SSH. [[http://download.savannah.gnu.org/releases/rdiff-backup|Téléchargement pour un "non ubuntu"]]

Rdiff-backup peut être utilisé avec [[truecrypt]]. Si quelqu'un veut rajouter une section dans la doc, il peut s'inspirer de [[http://forum.ubuntu-fr.org/viewtopic.php?id=205984&p=2|ce site]]

===== Installation =====

Pour installer **rdiff-backup**, il vous suffit de lancer la commande suivante :
<code>
sudo apt-get install rdiff-backup
</code>
Pour Ubuntu « Gutsy Gibbon » 7.10 il suffit de [[apt://rdiff-backup|cliquer ici]].

===== Utilisation =====







==== Faire la sauvegarde ====
Voici la commande qui permet de faire une sauvegarde :
  rdiff-backup --exclude /home/mon_login/.aMule /home/mon_login /repertoire_de_sauvegarde

Ici on sauvegarde tout le ''/home/mon_login'' sauf le repertoire ''/home/mon_login/.aMule'' dans le dossier de destination ''/repertoire_de_sauvegarde''.

Si ''/repertoire_de_sauvegarde'' n'est pas vide, un message nous indique qu'il faut utiliser l'option ''--force'' et dans ce cas, son contenu est supprimé. Donc attention, dans ce cas, à sauvegarder le contenu de ''/repertoire_de_sauvegarde'' au préalable.

=== Exemples ===

Sauvegarder uniquement les répertoires /usr/local et /var :

  rdiff-backup --include /usr/local --include /var --exclude '**' / /backup

Idem, mais la liste des répertoires à sauver dans un fichier nommé include-list.txt qui contient :

  /var
  /usr/bin/gzip

La commande sera alors :

  rdiff-backup --include-filelist include-list.txt --exclude '**' / /backup


Pour plus d'infos, voir [[http://www.nongnu.org/rdiff-backup/examples.html|ici]]

==== Supprimer des sauvegardes ====
Pour supprimer les différences accumulées au fur et à mesure que l'on a ajouté des sauvegardes :
  rdiff-backup --remove-older-than 1W --force /repertoire_de_sauvegarde

Ici on enlève toutes les modifications enregistrées vieilles de plus d'une semaine. On peut mettre ''D(ay)'',''W(eek)'', ''M(onth)'' et ''Y(ear)''.

S'il il y a plusieurs sauvegardes à supprimer, la commande échoue. C'est pourquoi il faut rajouter le paramètre ''--force'' pour ne pas prendre cette erreur en compte et que **rdiff-backup** effectue bien ce qu'on lui demande.





==== Tester un backup ====
Pour vérifier que nos sauvegardes fonctionnent bien, on peut restaurer une sauvegarde :
  rdiff-backup -r now /repertoire_de_sauvegarde /repertoire_de_restauration

L'option ''-r now'' permet de remettre la version de la sauvegarde la plus récente. On peut remonter dans les sauvegardes, par exemple remettre le repertoire d'il y a 3 jours avec l'option ''-r 3D''.

<note tip>Rdiff-backup fait une replication parfaite des fichiers dans leur dernière version. Ainsi pour restaurer des données, il suffit de faire ''cp -a /backupDir /restoredDir''</note>





==== Voir la liste des sauvegardes ====

   rdiff-backup -l /repertoire_de_sauvegarde





==== Sauvegarder sur une machine distante, via SSH ====

Remplacer

  /repertoire_de_sauvegarde

par

  <utilisateur>@<adresse_ip_de_la_machine_distante>::<repertoire_de_sauvegarde_sur_la_machine_distante>

Plus d'infos sur [[SSH|SSH ici]]

===== Automatiser les sauvegardes =====
Voici la partie vraiment intéressante : comment faire pour que nos commandes précédentes se lancent de façon automatique, de façon à ce que l'on ait pas à les faire manuellement chaque jour ?


==== Journaliser les tâches ====

Tout d'abord quelques mots sur les logiciels journalisation de tâches :
Actuellement on dispose de trois outils sous linux pour cela :
  * **[[:at]]** qui permet de définir des tâches à réaliser à un instant précis et si la machine est éteinte à ce moment là, la tâche sera réalisée au prochain démarrage. Utilisable par tout le monde.
  * **[[:cron]]** peut definir des tâches périodiques mais c'est un daemon donc si la machine est éteinte, la commande ne se lancera pas du tout. Utilisable par tout le monde.
  * **[[:anacron]]** lance des tâches de facon périodique et si l ordinateur n'était pas allumé au moment voulu, la tâche s'exécutera au prochain démarrage. Utilisable uniquement par root.

Dans notre cas, nous allons utiliser [[:cron]], cron utilise la crontab qui permet d'indiquer les tâches que l'on veut réaliser et à quelle fréquence.

Pour éditer la crontab, il suffit de faire :
  crontab -e

Pour journaliser notre tâche, on indique à [[:cron]] d'exécuter le script ''~/sauve_mon_dossier.sh'' chaque jour à 20h00. 

On met donc la ligne suivante dans notre crontab :
  00    20    *    *     *    ~/sauve_mon_dossier.sh

Celle-ci signifie //tous les jours à 20h00 lance le script ''/root/sauve_mon_dossier.sh'' //. **C'est bien les minutes d'abord et les heures ensuite, il n'y a pas d'erreur.** Pour plus d'informations sur le formalisme du ''crontab'', je vous invite à consulter [[:cron|cette page]].



==== Le script ====

Ensuite, il reste à faire le script pour lancer les sauvegardes.
On édite donc le fichier ''~/sauv_mon_dossier.sh'' avec son éditeur favori et on y insère les lignes suivantes :
  #!/bin/sh
  nice -n 19 rdiff-backup --exclude /home/login/.aMule /home/login /mnt/save && nice -n 19 rdiff-backup --remove-older-than 1W --force /mnt/save

Le ''nice -n 19'' signifie que lorsqu'on lance les commandes, elles s'exécutent avec la priorité la plus petite par rapport aux autres processus, ceci afin d'éviter que l'ordinateur ne se mette à ramer tous les jours à 20h00.

On sauvegarde le script et on n'oublie pas de mettre les droits d'éxecution sur le fichier :
  chmod +x ~/sauv_mon_dossier.sh

Voilà c'est fini, on peut simplement vérifier que le script fonctionne bien en le lançant :
  ~/sauve_mon_dossier.sh

Normalement **rdiff-backup** se lance, fait sa sauvegarde et vous informe ensuite qu'il a ou non supprimé les sauvegardes plus vieilles d'une semaine.


===== Trucs & astuces ======

* Pour afficher les listes des sauvegardes :
  rdiff-backup -l repertoire_de_sauvegarde

* Pour KDE (Kubuntu), il existe une interface graphique nommée [[http://www.kde-apps.org/content/show.php/Keep?content=32984|Keep]] et qui condense toutes ces actions de sauvegarde. Vous pouvez egalement aller voir la page [[keep|keep]] du wiki.

* Pour Gnome, il y a aussi une intreface : [[http://andrewprice.me.uk/projects/pybackpack|pybackpack]]

===== Références =====
Un bon site qui m'a permis de construire ce tutoriel :
[[http://www.nongnu.org/rdiff-backup/examples.html|Rdiff-backup (en)]]

----

//Contributeurs : [[utilisateurs:Herbie]], [[utilisateurs:ostaquet]] //

//Basé sur [[http://debuntu.tuxfamily.org]]//